package com.tao.interface_;

public class ExtendsVsInterface {
    public static void main(String[] args) {
        LittleMonkey xh = new LittleMonkey("小猴");
        xh.climb();
        xh.swim();
        xh.fly();
    }
}
//继承：价值在于代码的复用性和可维护性
//接口：价值在于设计，设计好各种规范，让其他类去实现这些方法，更加灵活
//接口实现接口规范性+动态绑定机制

class Monkey{
    private String name;

    public Monkey(String name) {
        this.name = name;
    }

    public void climb(){
        System.out.println(name + " 会爬树");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

class LittleMonkey extends Monkey implements fish,bird{
    public LittleMonkey(String name) {
        super(name);//因为父类猴子会爬树，所以小猴子继承父类猴子也就会爬树
    }

    @Override
    public void swim() {
        System.out.println(getName() + "通过学习会游泳");
    }

    @Override
    public void fly() {
        System.out.println(getName() + "通过学习会飞");
    }
}

//现在想让小猴子要会其他的技能，只有继承是实现不了的，因为继承是单继承的，
//不能同时继承多个类，这个时候就可以使用接口
//可以理解 实现接口是对java单继承机制的一种补充
interface fish{
    void swim();
}
interface bird{
    void fly();
}